// setTimeout(() => {
//   var a = "hello ";
//   setTimeout(() => {
//     var b = "lagou ";
//     setTimeout(() => {
//       var c = "I ❤️ U";
//       console.log(a + b + c)
//     }, 10)
//   }, 10)
// }, 10)


// const p = new Promise((resolve, reject) => {
//   setTimeout(() => {
//     var a = "hello"
//     resolve(a)
//   }, 10)
// }).then(a => {
//   var b = "lagou"
//   return new Promise((resolve, reject) => {
//     setTimeout(() => {
//       resolve(a + " " + b)
//     })
//   }, 10)
// }).then(val => {
//   var c = "I ❤️ U"
//   return new Promise((resolve, reject) => {
//     setTimeout(() => {
//       resolve(val + " " + c)
//     }, 10)
//   })
// }).then(val => {
//   console.log(val);
// })


const fp = require('lodash/fp');

const cars = [
  {name: "Ferrari FF", horsepower: 660, dollar_value: 700000, in_stock: true},
  {name: "Spyker C12 zagato", horsepower: 650, dollar_value: 648000, in_stock: false},
  {name: "Jaguar XKR-S", horsepower: 550, dollar_value: 132000, in_stock: false},
  {name: "Audi R8", horsepower: 525, dollar_value: 114200, in_stock: false},
  {name: "Aston Martin One-77", horsepower: 750, dollar_value: 1850000, in_stock: true},
  {name: "Pagani Huayra", horsepower: 700, dollar_value: 1300000, in_stock: true},
]

// // 使用 flowRight 重构下面的函数
// let isLastInStock = function (cars) {
//   // 获取最后一条数据
//   let last_car = fp.last(cars);
//   return fp.prop('in_stock', last_car)
// }

// const isLastInStock = fp.flowRight(fp.prop('in_stock'), fp.last)
// console.log(isLastInStock(cars));

// const firstCarName = fp.flowRight(fp.prop('name'), fp.first)
// console.log(firstCarName(cars));

// let _average = function(xs){
//   return fp.reduce(fp.add, 0, xs) / xs.length
// }

// let averageDollarValue = function (cars) {
//   let dollar_values = fp.map(function(car){
//     return car.dollar_value
//   }, cars)
//   return _average(dollar_values)
// }

// console.log(averageDollarValue(cars));

// const averageDollarValue = fp.flowRight(_average, fp.map(fp.prop('dollar_value')))
// console.log(averageDollarValue(cars)); // 790700





let _underscore = fp.replace(/\W+/g, "_")

// const sanitizeNames = fp.flowRight(fp.map(_underscore), fp.map(fp.toLower))
const sanitizeNames = fp.map(fp.flowRight(_underscore, fp.toLower, fp.prop('name')))

console.log(sanitizeNames(cars));
// [
//   'ferrari_ff',
//   'spyker_c12_zagato',
//   'jaguar_xkr_s',
//   'audi_r8',
//   'aston_martin_one_77',
//   'pagani_huayra'
// ]